(1) Technical Field
The present invention relates to computer storage systems, such as data storage devices that use error correction code (ECC) engines.
(2) Description of Related Art
Maintaining the integrity of stored data is an important concern in any storage system and different methods have been developed over the years in attempts to address this concern. A popular method is computing an Error Correction Code (or ECC) for a set of data and appending the ECC to the data in storage. When the data is retrieved, the ECC can be recomputed as the data is being read and then checked against the stored ECC to detect errors on the data.
Additionally, algorithms have been developed so that error corrections can be subsequently performed on the erroneous data, where such algorithms use the computed ECC. While such algorithms for ECC encoding and/or ECC error detection and correction can be implemented using software or firmware programs, advancements in ASIC (application specific integrated circuit) processing technology have allowed the embedding of logic for ECC computations in hardware. Typically, using hardware ECC engines is favorable over software computations (for error detection and correction) because of the speed at which the computations can be performed in hardware.
However, ECC computations in storage systems may still provide a performance bottleneck. Some current hardware ECC implementations place an ECC engine in the main storage controller. The ECC engine may typically be a bottleneck to the data path especially if the storage system employs parallelism and/or if the storage system controls multiple storage devices because the ECC computation by the ECC engine is centralized in the data transfers in a single data path area.
Some current hardware ECC implementations embed the ECC engine on each of the storage devices in the storage system. While this approach may potentially eliminate the bottleneck in the data path, this approach may not be economical because an ECC engine (embedded in a corresponding storage device) is unused if that corresponding storage device is not being accessed and would also add to the storage media device logic.
Hence, there is a need for a novel approach that solves the deficiencies in current storage systems that use ECC engines. There is also a need to increase the speed of ECC computations in storage systems.
Additionally, there is a further need for a novel approach to distributing the ECC engines in a storage system such that the ECC computations will not affect the performance of the storage system. There is yet a further need for a novel approach to distributing the ECC engines in a storage system in an economical manner (or optimized manner) and/or that would not require specialized storage media devices with added logic for the ECC engines.